1. Field of the Invention
The present invention generally relates to memory controllers, and more specifically, to a memory controller that selectably controls both memory cards conforming to standards of the Personal Computer Memory Card International Association (PCMCIA cards) as well as memory cards that are compliant with PCMCIA standards for a memory card socket, but are not compliant with PCMCIA standards in other respects.
2. Description of Background Art
The PCMCIA developed an interface for credit card-sized adapters for personal computers, where the adapters were originally intended for use as memory expansion. Now, however, the popularity of the PCMCIA adapters has grown to where the standard now supports I/O devices such as fax modems and Small Computer Systems Interface (SCSI) adapters.
The 1000 Series routers from CISCO Systems have in the past used PCMCIA cards to achieve desired cost/performance objectives. The manner in which PCMCIA cards were used was as a "removable code store." That is, the PCMCIA memory card stored CPU executable program instructions which, prior to execution, were read from the PCMCIA card and stored in a faster DRAM "execution memory." The CPU would then read program instructions from the execution memory and execute the instructions.
The disadvantages of the separate removable code store and execution memory are twofold. First, there is the added cost to manufacture the system. DRAM must be built into the system for the execution memory. Second is the added complexity. The CPU must be programmed to manage storage of the program instructions in the execution memory. The additional complexity adds to engineering costs and hardware requirements.
A common objective for follow-on products is to contain or reduce costs while improving performance. However, the two objectives often compete. Performance may be improved with an increased product cost structure, or cost may be reduced with an accompanying degradation in performance.
One way to reduce costs where a PCMCIA card is used as a removable code store is to use the PCMCIA card as the execution memory. PCMCIA cards are generally commercially available, cost competitive, and standards based. However, the PCMCIA approach has a substantial adverse impact on overall performance. The performance degradation is caused by the slow memory access speeds of the PCMCIA card relative to the memory access speed of the execution memory DRAM. For some applications, the PCMCIA standard does not support a 16 bit interface that is fast enough to achieve desired performance objectives.
Two approaches to improve performance include moving to another standard, such as Cardbus, which supports 32 bit access, or designing a proprietary removable program store. The Cardbus approach presents the disadvantages of increased cost and limited availability of commercial parts, and the proprietary design presents the disadvantages of increased design and production costs and incompatibility with prior systems.
Therefore, it would be desirable to have a memory system that is cost effective and whose performance falls within desired performance parameters.